package com.tang4j.service;

import com.tang4j.core.model.ResponseModel;
import com.tang4j.core.service.AbstractService;
import com.tang4j.model.response.ThSysUserDto;

import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author saber
 * @since 2019-11-12
 */
public interface ThSysUserService extends AbstractService<ThSysUserDto> {

    /**
     * 获取用户信息
     *
     * @param val 用户账号或者userId或者手机号码或者邮箱地址
     * @return ThSysUserDto
     */
    ThSysUserDto queryUser(Serializable val);

    ThSysUserDto queryByToken();

    /**
     * 根据用户权限获取的所有菜单信息（根据token）
     */
    ResponseModel queryUserInfo();

    /**
     * 根据用户权限获取的顶部菜单信息（根据token）
     */
    ResponseModel selectWorkFlowManageInfo();

    /**
     * 获取用户权限（根据token）
     */
    ResponseModel selectRolesView();

    /**
     * 新增或修改用户与部门的绑定数据
     *
     * @param deptId 部门id
     * @param userId 用户id
     */
    void updateUserDept(String deptId, String userId);

    /**
     * 新增或修改用户与部门的绑定数据
     *
     * @param thSysUserDto 部门id
     */
    void updateUserDept(ThSysUserDto thSysUserDto);

    /**
     * 修改密码
     *
     * @param userId 用户id
     */
    ResponseModel resetPassword(String userId);


    /**
     * 获取所有部门及其用户
     * @return ThSysUserDto
     */
    List<ThSysUserDto> selectDeptUserList();


}
